package Admin

/**
 * Created by Goland
 * User: wkk alisleepy@hotmail.com
 * Time: 2021/12/18 - 22:59
 * Desc: <管理员admin相关业务controller>
 */

import (
	"ali-hr/Services/Admin"
	_ "ali-hr/Services/Auth"
	"ali-hr/Util"
	"github.com/gin-gonic/gin"
	"github.com/gookit/goutil/dump"
	"strconv"
	"strings"
)

// Create 创建管理员
func Create(c *gin.Context) {
	name := strings.Trim(c.PostForm("name"), " ")
	password := strings.Trim(c.PostForm("password"), " ")
	if len(name) < 1 || len(password) < 1 {
		Util.FailWithMessage("用户名或密码不能为空", c)
		return
	}

	if Util.Debug() {
		dump.P("开始添加管理员。。。")
	}

	// 添加
	ok := Admin.CreateAdmin(name, password)
	if Util.Debug() {
		dump.P("添加管理员结果：", ok)
	}
	switch ok {
	case 0:
		Util.OkWithMessage("创建成功", c)
	case -1:
		Util.FailWithMessage("创建失败", c)
	case 1:
		Util.FailWithMessage("账户已存在", c)
	}
}

// Update 更新管理员
func Update(c *gin.Context) {
	userId := strings.Trim(c.PostForm("id"), " ")
	name := strings.Trim(c.PostForm("name"), " ")
	password := strings.Trim(c.PostForm("password"), " ")
	id, err := strconv.Atoi(userId)
	if err != nil {
		if Util.Debug() {
			dump.P("管理员ID：", userId)
		}
		Util.FailWithMessage("非法参数", c)
		return
	}
	if id < 1 {
		Util.FailWithMessage("ID不能为空", c)
		return
	}
	if len(name) < 1 || len(password) < 1 {
		Util.FailWithMessage("用户名或密码不能为空", c)
		return
	}

	ok := Admin.UpdateAdmin(id, name, password)
	if !ok {
		Util.FailWithMessage("该用户不存在", c)
		return
	}
	Util.OkWithMessage("更新成功", c)
}

// Delete 删除管理员
func Delete(c *gin.Context) {
	userId := strings.Trim(c.PostForm("id"), " ")
	id, err := strconv.Atoi(userId)
	if err != nil {
		if Util.Debug() {
			dump.P("管理员ID：", userId)
		}
		Util.FailWithMessage("非法参数", c)
		return
	}
	if id < 1 {
		Util.FailWithMessage("ID不能为空", c)
		return
	}
	res := Admin.DeleteAdmin(id)
	switch res {
	case 0:
		Util.OkWithMessage("删除成功", c)
	case -1:
		Util.FailWithMessage("删除失败", c)
	case 1:
		Util.FailWithMessage("账户不存在", c)
	}
}

// ChangeStatus 更新管理员状态
func ChangeStatus(c *gin.Context) {
	userId := strings.Trim(c.PostForm("id"), " ")
	status := strings.Trim(c.PostForm("status"), " ")
	id, err := strconv.Atoi(userId)
	if err != nil {
		if Util.Debug() {
			dump.P("管理员ID：", userId)
		}
		Util.FailWithMessage("非法参数", c)
		return
	}
	if id < 1 {
		Util.FailWithMessage("ID不能为空", c)
		return
	}
	if len(status) < 1 {
		Util.FailWithMessage("请选择状态", c)
		return
	}

	ok := Admin.ChangeStatus(id, status)
	if !ok {
		Util.FailWithMessage("修改失败", c)
		return
	}
	Util.OkWithMessage("修改成功", c)
}
